var jwt = require('jsonwebtoken')
/**
 * 生成TOKEN
 * @param {Object} payload
 * @param {String} secret
 * @returns
 */
function createToken(payload, secret, options = { expiresIn: 3600 }) {
  return jwt.sign(payload, secret, options)
}

/**
 * 解析TOKEN
 * @param {String} token
 * @param {String} secret
 * @returns
 */
function parseToken(token, secret) {
  return jwt.decode(token, secret)
}

/**
 * 校验TOKEN
 * @param {String} token
 * @param {String} secret
 * @returns
 */
function verifyToken(token, secret) {
  try {
    let payload = jwt.verify(token, secret)
    return payload
  } catch (error) {
    return null
  }
}

/**
 * redis 校验
 * @param {String} token
 * @param {String} redisVal
 * @returns
 */
function redisCheck(token, redisVal) {
  return token == redisVal
}

module.exports = {
  createToken,
  parseToken,
  verifyToken,
  redisCheck,
}
